package com.dxf.chepter06

/**
 * trait 特质:  类似接口
 * 特质:
 * 类与类之间只支持单继承
 * 类与特质直接可以多继承
 * scala的特质中有普通字段,抽象字段,普通方法,抽象方法
 * 叫法:
 * 1 特质中只有抽象内容,这样的特质叫      瘦接口
 * 2 特质中既有内容,又又具体内容,叫       富接口
 *
 * 定义特质
 * trait 名称{
 * //普通字段
 * //抽象洗的
 * //普通方法
 * //抽象方法
 * }
 *
 * 继承特殊值
 *
 * class 类名 extents 特质1 with 特质2 with 特质3 {
 * //重写抽象方法
 * //重写抽象字段
 * //可重写普通字段和普通方法
 * }
 *
 *
 * =====================================
 *
 *
 * 对象混入 :
 *  类和特质直接无任何关系,在不改变继承体系下,对对象的功能进行增强或者扩展,使用对象混入计数
 *
 *  语法:
 *    var/val 对象名 = new 类 with 特质
 *
 *
 *
 *    =====================================
 *
 *
 *    特质实现适配器模式
 *
 *      适配器模式:
 *        1 当我们需要用到某几个方法时,不得不将改特质中的所有抽象方法重写 麻烦
 *        2 针对这种情况,我们可以定义一个抽象类去继承该特质,重写特质中的[所有]抽象方法,[所有]抽象方法体为空
 *        3 这时候,我们需要使用哪个方法,只需要定义类去继承抽象类,重写指定方法即可
 *        这个抽象类 就叫做适配器类
 *
 *
 *     结构:  类B为适配器类角色
 *      trait 特质A{
 *
 *        抽象方法1
 *        抽象方法2
 *        抽象方法3
 *
 *      }
 *
 *      abstract class 类B extends 特质A {
 *        重写抽象方法1,方法体为空
 *        重写2 空
 *        重写3 空
 *
 *
 *      }
 *
 *
 *      class 类C extends 类B {
 *        //需要使用哪个方法,重写哪个方法
 *      }
 *
 *
 */
object T68_使用trait实现适配器设计模式 {
  def main(args: Array[String]): Unit = {


  }


  trait PlayLol{
    def top()
    def mid()
    def adc()
    def support()
    def jungle()
    def schoolchild()

  }

  abstract class Player extends PlayLol{
     override def top(): Unit = { }



     override def mid(): Unit = { }

     override def adc(): Unit = { }

     override def support(): Unit =  { }

     override def jungle(): Unit =  { }

     override def schoolchild(): Unit =  { }
   }



  class GreeHand extends Player{
    override def schoolchild(): Unit = {
    println("xxx")
    }
  }



}

